<?php

namespace app\wechat\lib;
use think\Config;

class OAuth
{
    // 获取授权api
    // https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
    // redirect_uri  回调链接地址
    // scope         应用授权作用域
    //               snsapi_base      不弹出授权页面，直接跳转，只能获取用户openid
    //               snsapi_userinfo  弹出授权页面，可通过openid拿到昵称、性别、所在地
    //                                并且，即使在未关注的情况下，只要用户授权，也能获取其信息
    // state         自定义参数
    public static function uri($redirectUri, $state = '')
    {
        $uri = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . Config::get('appid')
               . '&redirect_uri=' . urlencode($redirectUri)
               . '&response_type=code&scope=snsapi_userinfo&state=' . $state
               . '#wechat_redirect';
        return $uri;
    }

    // 通过code换取网页授权access_token
    // @param  $code  授权成功后返回的CODE
    // @return $api
    public static function accessToken($code)
    {
        $uri = 'https://api.weixin.qq.com/sns/oauth2/access_token'
             . '?appid=' . Config::get('appid')
             . '&secret=' . Config::get('appsecret')
             . '&code=' . $code
             . '&grant_type=authorization_code';
        $res = https_curl($uri);
        $res = json_decode($res,true);
        return $res;
    }

    // 拉取用户信息(需scope为 snsapi_userinfo)
    public static function uinfo($access_token, $openid)
    {
        $uri = 'https://api.weixin.qq.com/sns/userinfo'
             . '?access_token=' . $access_token
             . '&openid=' . $openid
             . '&lang=zh_CN';
        $res = https_curl($uri);
        $res = json_decode($res,true);
        return $res;
    }
}
